"use strict";
// 类的基本使用
class Greeter {
    constructor(message, name) {
        this.gnum = 100;
        this.greeting = message; // 在构造器中给属性greeting赋初始值
        this.gname = name;
    }
    greet() {
        return "Hello, " + this.gname;
    }
}
let greeter = new Greeter("world", "小王");
console.log(greeter.greeting, greeter.greet());
// console.log(greeter.gnum);
class Man extends Greeter {
    constructor(greet, mname, msex) {
        super(greet, mname); // 调用父类的constructor
        this._age = 0; // 私有属性
        this.msex = msex;
    }
    getAge() {
        console.log(this._age, this.gnum);
    }
}
let man = new Man("china", "张三", "男");
console.log(man.greeting, man.gname, man.greet(), man.msex);
// console.log(man.gnum);
// 三个修饰符:
// public：默认修饰符，一个class类中，默认所有的属性和方法都有public修饰。它表示公共的属性和方法：在类内部、类外部、子类都可以使用这些方法和属性。
// private：它表示私有的属性和方法：只能在类内部使用这些方法和属性。
// protected：它表示受保护的属性和方法：只能在父类内部和子类内部中，使用这些方法和属性。父类和子类的外部不能使用。
// readonly: 公共的只读的属性和方法
